The spacing of objects has been a fundamental problem through history. Architecture design programs, generally known as computer aided design (CAD) programs, provide a planning mechanism that allows individuals to simulate the architecture and physical layout of a particular design. By simulating the layout of a particular design, a significant reduction in manufacturing costs may be realized as mistakes are identified and corrected and design changes are made prior to construction or manufacturing of the particular design.
In certain cases, a design may require a particular type of object to be placed at multiple locations within a particular area (the “target area”). For example, a building design may require that windows be placed fifteen feet apart on each floor of the building.
To determine the spacing of objects, typical design programs query the user to enter a “requested object count” and a “requested spacing offset”. The requested object count indicates a number of objects that the user wishes to place in the target area. The requested spacing offset indicates a particular spacing that the user wishes to achieve between each object. The user may also specify a start location and a particular direction for the spacing objects.
To map the object into the target area, the design program identifies and places an object at the starting location, typically referenced as location (0,0) relative to the target area. The design program then identifies a next location based on the requested spacing offset and places an object at the next identified location. This process is repeated until the “requested” number of objects have been mapped.
A drawback associated with spacing objects in this manner is that the requested object count and requested spacing offset may not correctly conform to the boundaries of the target area. For example, if the “requesting” spacing of windows or the “requested” window count is too high, some windows may be placed beyond the end of the wall in which they are to be built. Thus, the user is required to repeatedly modify the requested object count and spacing offset values on a trial and error basis to achieve a desired spacing of objects for the particular area.
For example, FIG. 1A illustrates the mapping of objects as performed by the prior art. As depicted, FIG. 1A includes areas 102 and 104 in which a set of window objects 106 and 108 are respectively mapped. For area 102, the user specified a requested object count equal to “4” and a requested spacing offset equal to “10”. Because the requested object count and requested spacing offset do not correctly conform to the area 102, the placement of window object 106 does not correctly conform to area 102. Conversely, for area 104, the user specified a requested object count equal to “5” and a requested spacing offset equal to “10”. Here again, because the requested object count and requested spacing offset do not correctly conform to the area 104, the placement of window object 108 does not correctly conform to area 102. Thus, to cause the window objects 106 and 108 to correctly conform with areas 102 and 104, the user must modify either or both of the requested object count or requested spacing offset values and again wait for the design program to map the objects into the corresponding areas to determine whether the requested object count and requested spacing offset correctly conform to the corresponding areas.
Another drawback with the prior art is that the spacing of objects can only be performed in a single direction. Therefore, a user cannot easily perform the spacing of objects in a multi-dimensional area. For example, FIG. 1B depicts a side of a building 120 for which a user requires window objects 122 to be spaced on multiple floors 124, 126, 128 and 130. To cause the spacing of widow object 122 to conform to floor 130, the user repeatedly interacts with a design program to enter the appropriate requested object count and requested spacing offset values for floor 130. Likewise, to cause the spacing of widow object 122 to conform to floor 128, the user repeatedly interacts with the design program to enter the appropriate requested object count and requested spacing offset values for floor 128. However, because a user can only define the spacing of objects in a single direction, the user cannot easily control the spacing of window object 122 between floors 128 and 130.
Based on the foregoing, it is highly desirable to provide a mechanism that can be used for the spacing of objects without having to repeatedly map the objects on a trial and error basis to obtain a desired spacing.
It is also highly desirable to provide a mechanism that performs spacing of objects for multi-dimensional areas.